import getData from 'src/service/getData.js';
import {Storage} from 'src/utils/storage.js';
import store from '../vuex/index.js';

function randomWord(randomFlag, min, max) {
  var pos;
  var str = "",
    range = min,
    arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

  // 随机产生
  if (randomFlag) {
    range = Math.round(Math.random() * (max - min)) + min;
  }
  for (var i = 0; i < range; i++) {
    pos = Math.round(Math.random() * (arr.length - 1));
    str += arr[pos];
  }
  return str;
}

/**
 * Common 公共方法
 */

function randomWord(randomFlag, min, max) {
  var pos, str = "",
    range = min,
    arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

  // 随机产生
  if (randomFlag) {
    range = Math.round(Math.random() * (max - min)) + min;
  }
  for (var i = 0; i < range; i++) {
    pos = Math.round(Math.random() * (arr.length - 1));
    str += arr[pos];
  }
  return str;
}

export let Common = {
    /**
     * 获取签名
     */
    async getSign(e = false) {
      // let url = store.state.user.url
      let noncestr = "429106734"
      let timestamp = Math.floor(Date.now() / 1000); //签名需要10位的时间戳
      let params = {
        "noncestr": noncestr,
        "timestamp": timestamp.toString(),
        "url": location.href.split('#')[0] // 仅需要对签名的url进行编码，分享配置中的url不需要编码
      }
      let data = await getData.getSignature(params)
      // Storage.set('wxSign', data, true) //存着没意义，重新请求又是新的
      if (data.respCode === '00') {
        // Storage.set(url,data,true);
        let signData = data.content.signature;
        //alert(window.location.href);
        await wx.config({ // config是一个客户端的异步操作
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
          appId: process.env.APPID, // 必填，公众号的唯一标识
          timestamp: signData.timestamp, // 必填，生成签名的时间戳
          nonceStr: signData.noncestr, // 必填，生成签名的随机串
          signature: signData.signature, // 必填，签名，见附录1
          jsApiList: ['getLocation', 'scanQRCode', 'hideOptionMenu', 'openLocation', 'chooseImage', 'previewImage', 'onMenuShareTimeline', 'onMenuShareQQ', 'uploadImage', 'downloadImage', 'chooseWXPay', 'onMenuShareAppMessage'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
        });
      }
      if (e) {
        // 邀请与分享，登录时已设置，这是用于刷新页面重新设置
        await wx.ready(res => {  // 如果需要定制ready回调方法
          this.wechatShare()
        })
      }
    },
    /**
     * 重新获取签名
     */
    reGetSign
      () {
      let i = 0;
      wx.error(res => {
        if (i < 1) {
          this.getSign()
        }
        i++
      });
    },
    setWechatShare({title, desc, link, imgUrl}) {
      link = location.origin + '/evt.html#!url=' + link;
      wx.onMenuShareTimeline({
        title, // 分享标题
        desc,
        link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl, //分享图标
        success: function () { // 用户确认分享后执行的回调函数

        },
        cancel: function () {  // 用户取消分享后执行的回调函数

        }
      });
      wx.onMenuShareAppMessage({
        title,
        desc,
        link,
        imgUrl,
        type: 'link', // 分享类型,music、video或link，不填默认为link
        success: function () {
        },
        cancel: function () {
        }
      })
      // 分享到QQ
      wx.onMenuShareQQ({
        title, // 分享标题
        desc, // 分享描述
        link, // 分享链接
        imgUrl, // 分享图标
        success: function () {
          // 用户确认分享后执行的回调函数
        },
        cancel: function () {
          // 用户取消分享后执行的回调函数
        }
      });
    }
    ,
    wechatShare: function () {
      let id = Storage.get('user', true) ? Storage.get('user', true).usrWchatOpenid : 'ovKWk1dpJQLYthOfYYiUIpRLgRNo';
      // 分享到朋友圈
      let url = "/wxShare?id=" + id;
      let link = location.origin + '/evt.html#!url=' + url;
      let title = '任性送666芸券+新手大礼包';
      let imgUrl = process.env.DOMAIN_NAME + '/share.jpeg';
      let desc = '吃火锅，喝奶茶，找代驾，泡网咖，样样实惠，通通省钱~'

      wx.onMenuShareTimeline({
        title, // 分享标题
        link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl, //分享图标
        success: function () { // 用户确认分享后执行的回调函数

        },
        cancel: function () {  // 用户取消分享后执行的回调函数

        }
      });
      // 分享给朋友
      wx.onMenuShareAppMessage({
        title, // 分享标题
        desc, // 分享描述
        link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl, // 分享图标
        type: 'link', // 分享类型,music、video或link，不填默认为link
        success: function () {

        },
        cancel: function () {
        }
      });
      // 分享到QQ
      wx.onMenuShareQQ({
        title, // 分享标题
        desc, // 分享描述
        link, // 分享链接
        imgUrl, // 分享图标
        success: function () {
          // 用户确认分享后执行的回调函数
        },
        cancel: function () {
          // 用户取消分享后执行的回调函数
        }
      })
    }
  }
;
// window.Common = Common;

Date.prototype.format = function (format) {
  var o = {
    "Y+": this.getFullYear(), //month
    "M+": this.getMonth() + 1, //month
    "d+": this.getDate(), //day
    "h+": this.getHours(), //hour
    "m+": this.getMinutes(), //minute
    "s+": this.getSeconds(), //second
    "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
    "S": this.getMilliseconds() //millisecond
  }
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  }
  for (var k in o) {
    if (new RegExp("(" + k + ")").test(format)) {
      format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
    }
  }
  return format;
};
Array.prototype.removeVa = function (val) { //定义数组删除
  var index = this.indexOf(val);
  if (index > -1) {
    this.splice(index, 1);
  }
};
Array.prototype.contains = function (needle) { //判断数组中是否存在元素
  for (var i in this) {
    if (this[i] == needle) return true;
  }
  return false;
};
